Çàêðûòü îêíî
Ñïèñîê äðóãèõ äîêóìåíòîâ ÏÝÂÌ "Àãàò"
%PAGE
10. ÁAÇÈCHÛE ÏOÄÏPOÃPAMMÛ BBOÄA-BÛBOÄA.
10.1. Haçía÷eíèe.
Áaçècíûe ïoäïpoãpaììû ââoäa-âûâoäa (Input-Output SUBroutines), â äaëüíeéøeì - IOSUB, oáecïe÷èâaþò ìèíèìaëüíûe âoçìoæíocòè opãaíèçaöèè äèaëoãa â cècòeìe "Øêoëüíèöa" c ècïoëüçoâaíèeì êëaâèaòópû è òeëeìoíèòopa - ócòpoécòâ, âxoäÿùèx â ìèíèìaëüíóþ êoíôèãópaöèþ òexíè÷ecêèx cpeäcòâ ÝBM "AÃAT". Ýòè ïoäïpoãpaììû ïoçâoëÿþò ïoäíÿòü ópoâeíü ïpoãpaììèpoâaíèÿ ía acceìáëepe, oáëeã÷aÿ âûïoëíeíèe ÷acòo ècïoëüçóeìûx äeécòâèé.
Ocíoâíûe ôóíêöèè, âûïoëíÿeìûe IOSUB, òaêoâû:
\Bâoä:\
%LISTM
-ââoä oäèío÷íoão cèìâoëa c êëaâèaòópû;
-ââoä còpoêè cèìâoëoâ c êëaâèaòópû c pacïoçíaâaíèeì peäaêòèpóþùèx cèìâoëoâ;
-òe æe ôopìû ââoäa c ècïoëüçoâaíèeì ïpoãpaììû ââoäa, çaäaííoé ïoëüçoâaòeëeì, â ò.÷. ââoä c äpóãoão ócòpoécòâa ïpè coáëþäeíèè pÿäa ïpaâèë;
-ïepeêoäèpoâêa cèìâoëoâ ía ââoäe (cëèÿíèe oäèíaêoâûx ïo íaïècaíèþ póccêèx è ëaòèícêèx áóêâ);
-âûïoëíeíèe ôóíêöèoíaëüíûx câoécòâ cèìâoëoâ ía ââoäe, ò.e. cïeöèaëüíûx äeécòâèé â cëó÷ae ïocòóïëeíèÿ òoão èëè èíoão cèìâoëa.
%ENDL
\Bûâoä:\
%LISTM
-âûâoä oäèío÷íoão cèìâoëa ía ýêpaí â oäíoì èç äâóx òeêcòoâûx peæèìoâ;
-âûâoä c ècïoëüçoâaíèeì ïoäïpoãpaììû âûâoäa cèìâoëa, çaäaííoé ïoëüçoâaòeëeì, â ò.÷. âûâoä ía äpóãoe ócòpoécòâo;
-âûïoëíeíèe ôóíêöèoíaëüíûx câoécòâ cèìâoëoâ ía âûâoäe; cþäa oòíocÿòcÿ:
%LISTM
-óïpaâëeíèe öâeòaìè ïpè âûâoäe,
-óïpaâëeíèe ïoçèöèeé âûâoäa,
-óïpaâëeíèe coäepæaùeécÿ ía ýêpaíe èíôopìaöèeé.
%ENDL
%ENDL
Míoãèe âoçìoæíocòè IOSUB cïeöèaëüío oôopìëeíû â âèäe ïoäïpoãpaìì äëÿ óäoácòâa èx ècïoëüçoâaíèÿ â acceìáëepíoé ïpoãpaììe. Hèæe, ïpè áoëee äeòaëüíoì çíaêoìcòâe c IOSUB ïpeäïoëaãaeòcÿ ïapaëëeëüíoe çíaêoìcòâo c èx ècxoäíûì òeêcòoì, oáëeã÷aþùeì ïoíèìaíèe ïpèíöèïoâ èx paáoòû.
10.2. Aïïapaòíûe è ïpoãpaììèpóeìûe âoçìoæíocòè âeäeíèÿ äèaëoãa.
\Aïïapaòíûé ââoä c êëaâèaòópû\. Ocóùecòâëÿeòcÿ c ïoìoùüþ 3 ïceâäoÿ÷eeê:
%LISTD
-KBD (¤C000) - ïpè íaæaòèè êëaâèøè cþäa ïoïaäaeò ee êoä (êoä ââeäeííoão cèìâoëa) \c ócòaíoâëeííûì còapøèì áèòoì\. Këaâèøè ìoãóò ïocûëaòü oò 1 äo 3 êoäoâ â çaâècèìocòè oò peãècòpoâoé êëaâèøè, c êoòopoé oía íaæaòa. Peãècòpû PÓC è LAT ía ïocûëaeìûe êëaâèøaìè êoäû íe âëèÿþò.
-KBDSTRB (¤C010) - ïpè oápaùeíèè ê ýòoé ÿ÷eéêe còapøèé áèò KBD cápacûâaeòcÿ â 0.
-KBDREG (¤C063) - còapøèé áèò=0, ecëè ócòaíoâëeí peãècòp PÓC, è paâeí 1, ecëè peãècòp LAT. Oía äaeò âoçìoæíocòü \ïpoãpaììío\ oòäaâaòü ïpeäïo÷òeíèe òoìó èëè èíoìó peãècòpó ïpè ââoäe êëaâèø.
%ENDL
Ïpoöeäópa oæèäaíèÿ ââoäa cèìâoëa, òaêèì oápaçoì, â ïpocòeéøeì cëó÷ae òaêoâa:
BIT KBDSTRB ;cápocèòü áèò KBD
READ LDA KBD
BPL READ ;ecëè cò.áèò cápoøeí - ââoäa íe áûëo
... ;êoãäa ócòaíoâèòcÿ - cèìâoë ââeäeí
Oïpoc, áûëa ëè íaæaòa êëaâèøa, ìoæeò âûãëÿäeòü òaê:
LDA KBD
BPL HET
BMI ÄA
\Aïïapaòíûé âûâoä ía ýêpaí\. Óïpaâëeíèe âûâoäoì ía ýêpaí câoäèòcÿ ê ïpoãpaììíoé oápaáoòêe oápaça ýêpaía â ïaìÿòè. Ýòo oáëacòü paçìepoì 2 Káaéòa, coäepæèìoe êoòopoé ìoæeò aïïapaòíûìè cpeäcòâaìè oòoápaæaòücÿ ía ýêpaí â oäíoì èç òeêcòoâûx peæèìoâ (ÃHC èëè ÃÖC). Bûâoä cèìâoëa paâíocèëeí eão çaïècè â íeêoòopóþ ÿ÷eéêó ýòoé oáëacòè.
Áaçoâûé aäpec (ÁA) ýêpaííoé ïaìÿòè äoëæeí áûòü êpaòeí ¤800. Ecëè oí, êpoìe òoão, êpaòeí ¤1000, òo â peæèìe ÃHC èçoápaæaþòcÿ ÷epíûe cèìâoëû ía áeëoì ôoíe, èía÷e - íaoáopoò. Còpoêa ýêpaía oòoápaæaeòcÿ 64 áaéòaìè, ïocëeäoâaòeëüíocòü oòoápaæeíèÿ còpoê â ïaìÿòè cooòâeòcòâóeò èx ïopÿäêó ía ýêpaíe.
B peæèìe ÃHC êaæäoìó cèìâoëó còpoêè cooòâeòcòâóeò oäèí áaéò â ïaìÿòè, ãäe xpaíèòcÿ eão êoä. Aäpec ïoçèöèè X â còpoêe Ó (Ó - câepxó, oòc÷eò X è Ó âeäeòcÿ c 0) çaäaeòcÿ ôopìóëoé:
ÁA + 64 * Ó + X .
B peæèìe ÃÖC êaæäoìó cèìâoëó cooòâeòcòâóeò 2 áaéòa: â 1-ì òaêæe xpaíèòcÿ eão êoä, a 2-é oïpeäeëÿeò öâeòíocòü cèìâoëa:
áèòû 2-0 - öâeò (8 öâeòoâ),
áèòû (5,3) = 00 - èíâepcíûé cèìâoë,
01 - ìèãaþùèé cèìâoë,
10,11 - íopìaëüíûé cèìâoë.
Aäpec ïoçèöèè X â còpoêe Ó (ïpè òex æe ócëoâèÿx) oïpeäeëÿeòcÿ ïo ôopìóëe
ÁA + 64 * Ó + 2 * X .
Öâeòíocòü xpaíèòcÿ â cëeäóþùeì áaéòe.
\Boçìoæíocòü ââoäa c ýêpaía\. ×èòaÿ áaéò ýêpaííoé ïaìÿòè, ìoæío oïpeäeëèòü, êaêoé cèìâoë èçoápaæeí â íeêoòopoé ïoçèöèè ýêpaía, a òaêæe eão öâeòíocòü.
\Oêío äèaëoãa\. IOSUB äoïócêaþò âeäeíèe äèaëoãa íe ía âceé ïëoùaäè ýêpaía, a â oãpaíè÷eííoé ïpÿìoóãoëüíoé oáëacòè, íaçûâaeìoé \oêíoì\. Ocòaëüíóþ ÷acòü ýêpaía ïpè ýòoì oíè íe çaòpaãèâaþò.
\Teêóùaÿ ïoçèöèÿ\. Äëÿ opãaíèçaöèè äèaëoãa ââeäeío ïoíÿòèe òeêóùeé ïoçèöèè â oêíe. Bo âpeìÿ âûâoäa oía óêaçûâaeò, ãäe áóäeò âûâeäeí o÷epeäíoé cèìâoë, a âo âpeìÿ ââoäa oïpeäeëÿeò ïoçèöèþ \êópcopa\, ïoýòoìó ÷aùe oía äëÿ eäèíooápaçèÿ íaçûâaeòcÿ \ïoçèöèeé êópcopa\.
Ïoçèöèÿ êópcopa ìeíÿeòcÿ ïpè âûâoäe êaæäoão cèìâoëa òaê, ÷òoáû opãaíèçoâaòü ecòecòâeííoe çaïoëíeíèe ýêpaía cèìâoëaìè cëeâa íaïpaâo câepxó âíèç; ïpè íeoáxoäèìocòè ýêpaí "cäâèãaeòcÿ" ââepx, ocâoáoæäaÿ ïócòóþ còpoêó (òeêcò "óïoëçaeò" ââepx). Ëþáûe äpóãèe ïepeìeùeíèÿ êópcopa peaëèçoâaíû êaê ôóíêöèoíaëüíaÿ íaãpóçêa ía óïpaâëÿþùèe cèìâoëû ïpè èx âûâoäe (íaïpèìep, cèìâoë "ÓÏP-Z" cìeùaeò êópcop ía còpoêó âíèç).
\Áóôep ââoäa còpoêè.\ 2-ÿ còpaíèöa OÇÓ ècïoëüçóeòcÿ IOSUB äëÿ íaêoïëeíèÿ còpoêè cèìâoëoâ, ââoäèìoé ïoäïpoãpaììoé GETLN.
10.3. Ïocòoÿííûe ïapaìeòpû äèaëoãa.
Cocòoÿíèe äèaëoãa ïoëíocòüþ oïpeäeëÿeòcÿ íecêoëüêèìè ïapaìeòpaìè, êoòopûe xpaíÿòcÿ â cëeäóþùèx ÿ÷eéêax íóëeâoé còpaíèöû:
%LISTL
-ocíoâíûe ïapaìeòpû:
%LISTM
-TXPAGE (¤A6) - íoìep ía÷aëüíoé còpaíèöû ýêpaííoé ïaìÿòè (còapøèé áaéò ÁA);
-INVFLG (¤32) - còapøèé áèò - peæèì äèaëoãa: (0-ÃÖC, 1-ÃHC), ocòaëüíûe èìeþò cìûcë òoëüêo â peæèìe ÃÖC è oïpeäeëÿþò öâeòíocòü cèìâoëa (ôaêòè÷ecêè, coäepæèìoe INVFLG çaïècûâaeòcÿ âo 2-é áaéò ïpeäcòaâëeíèÿ cèìâoëa ía ýêpaíe);
-WNDLFT (¤20) - ëeâûé oòcòóï oêía: paccòoÿíèe ìeæäó ëeâûìè êpaÿìè oêía è ýêpaía \â áaéòax\ (äëÿ ÃHC - ýòo ÷ècëo cèìâoëoâ, äëÿ ÃÖC - äâoéíoe ÷ècëo);
-WNDWDTH (¤21) - øèpèía oêía \â áaéòax\;
-WNDTOP (¤22) - âepxíÿÿ ãpaíèöa oêía (paccòoÿíèe oò 0 còpoêè ýêpaía);
-WNDBTM (¤23) - íèæíÿÿ ãpaíèöa oêía (paccòoÿíèe oò 0 còpoêè ýêpaía);
-CH (¤24) - ïoçèöèÿ êópcopa â còpoêe (oò ëeâoão êpaÿ \oêía\);
-CV (¤25) - òeêóùaÿ còpoêa (âepòèêaëüíaÿ ïoçèöèÿ êópcopa), c÷èòaÿ c 0 oò âepxíeé còpoêè \ýêpaía\.
-CSWL,CSWH (¤36-37) - aäpec ïoëüçoâaòeëücêoé ïoäïpoãpaììû âûâoäa cèìâoëa; â IOSUB ýòó ôóíêöèþ âûïoëíÿeò COUT1;
-KSWL,KSWH (¤38-39) - aäpec ïoëüçoâaòeëücêoé ïoäïpoãbpaììû ââoäa cèìâoëa; â IOSUB ýòó ôóíêöèþ âûïoëíÿeò KEYIN.
%ENDL
%AREA 19 ****************************************** * ^ ^ ^ * * ! ! ! * * WNDTOP ! CV ! ! WNDBTM * * ! ! ! * * v ! ! * * !----------!------! ! * * ! OKHO ! ! ! * * ! ! ! ! * * ! v ! ! * * !<---CH---> ! ! * * WNDLFT ! ! ! * *<------->! ! ! * * !<----WNDWDTH---->! ! * * !_________________! v * * * ******************************************
Pèc.10.1. Çaäaíèe oêía è ïoçèöèè êópcopa.
-âcïoìoãaòeëüíûe ïapaìeòpû:
%LISTM
-BASL,BASH (¤28-29) - aäpec ía÷aëa òeêóùeé còpoêè \oêía\; âû÷ècëÿeòcÿ êaæäûé paç ÿâío ïpè cìeíe çía÷eíèÿ CV; ècïoëüçóeòcÿ äëÿ óäoácòâa èíäeêcíoão äocòóïa ê ïoçèöèè êópcopa;
-RNDL,RNDH (¤4E-4F) - cëó÷aéíoe ÷ècëo, èçìeíÿeòcÿ â KEYIN â òeëe öèêëa oæèäaíèÿ ââoäa êëaâèøè;
-PROMPT (¤33) - cèìâoë-ïpèãëaøeíèe êo ââoäó còpoêè (GETLN).
%ENDL
%ENDL